package com.example.demo.service;

import com.example.demo.entity.BackResponseEntity;
import com.example.demo.entity.PostFavorite;
import com.example.demo.entity.requestJson.DeleteReq;
import com.example.demo.entity.requestJson.FavoritePostReq;
import com.example.demo.entity.requestJson.QueryFavPostReq;
import com.example.demo.entity.responseJson.ListResult;
import com.example.demo.entity.responseJson.PostFavoriteRes;

import java.util.List;

/**
 * 帖子收藏表(PostFavorite)Service层
 *
 * @author 杨丽辉
 * @since 2021-03-15 10:43:24
 */

public interface PostFavoriteService {

 /**
     * 通过ID和其他条件查询单条数据
     *
     * @param postFavorite 实例对象
     * @return 实例对象
     */
     public PostFavorite queryPostFavoriteLimit1(PostFavorite postFavorite);
     
 /**
     * 查询指定行数据
     * @param postFavorite 实例对象
     * @param offset 查询起始位置
     * @param limit 查询条数
     * @return 对象列表
     */
  public   List<PostFavorite> queryAllPostFavoriteByLimit( PostFavorite postFavorite, Integer offset,  Integer limit);
  /**
     * 查询数据条数
     * @return 条数
     */
   public int countAllPostFavorite(PostFavorite postFavorite);
   /**
     * 通过实体作为筛选条件查询
     *
     * @param postFavorite 实例对象
     * @return 对象列表
     */
   public List<PostFavorite> queryAllPostFavorite(PostFavorite postFavorite);
  /**
     * 新增数据
     *
     * @param postFavorite 实例对象
     * @return 影响行数
     */
    public int insertPostFavorite(PostFavorite postFavorite);
  /**
     * 修改数据
     *
     * @param postFavorite 实例对象
     * @return 影响行数
     */
     public  int updatePostFavorite(PostFavorite postFavorite);

    /**
     * 通过主键删除数据
     * @param postFavoriteId 主键
     * @return 影响行数
     */
   public  int deletePostFavoriteById(String postFavoriteId);
     /**
     * 通过主键列表删除，列表长度不能为0
     * @param list 集合
     * @return 条数
     */
  public  int deletePostFavoriteByIds( List<String> list);
    
       /**
     * 通过主键修改实体列表，列表长度不能为0，注意：当实体属性为null时，对应的列也会别更新为null
     * @param list 集合
     * @return 条数
     */
   public int updatePostFavoriteBatch( List<PostFavorite> list);
    /**
     * 批量其他列,除主键以外的列，列表长度不能为0,字段是空的就置为null
     * @param list 集合
     * @return 条数
     */
 public   int insertPostFavoriteBatch( List<PostFavorite> list);
      /**
     * 通过实体非空属性删除
     * @param postFavorite  实体
     * @return 条数
     */
  public   int deletePostFavoriteByEntity( PostFavorite postFavorite);
    /**
     * 通过实体不为空的属性作为筛选条件查询列表
     * @param postFavorite  实体
     * @return list
     */
   public  List<PostFavorite> listPostFavoriteByEntity(PostFavorite postFavorite);

 /**
     * 新增实体属性不为null的列
     * @param postFavorite  实体
     * @return 条数
     */
   public  int insertPostFavoriteSelect( PostFavorite postFavorite);
   
      /**
     * 批量新增新增实体属性不为null的列
     * @param list  实体
     * @return 条数
     */
  public  int insertPostFavoriteListSelect( List<PostFavorite> list);
     /**
     * 通过实体不为空的属性作为筛选条件查询单个
     * @param postFavorite  实体
     * @return 单个
     */
    public  PostFavorite getPostFavoriteByEntity(PostFavorite postFavorite);

    BackResponseEntity<Object> insertFavoritePost(FavoritePostReq favoritePostReq);
    BackResponseEntity<ListResult<List<PostFavoriteRes>>> querybookshelefPost(DeleteReq deleteReq);
    BackResponseEntity<Object> isfavoritePost(FavoritePostReq favoritePostReq);
    BackResponseEntity<Object> unSubscribePost(FavoritePostReq favoritePostReq);
    BackResponseEntity<List<PostFavoriteRes>> fuzzyQueryPost(QueryFavPostReq queryFavPostReq);
}




